1. Field of the Invention
The present disclosure relates generally to computer and processor architecture, storage management, input/output (I/O) processing, operating systems and in particular, to a method, system, and storage medium for the InfiniBand™ Poll verb to support a multi-threaded environment without the use of kernel services to provide serialization for mainline Poll logic.
2. Description of the Related Art
In a typical operating system environment, such as z/OS, OS/390, and predecessor versions, input/output (I/O) completion processing requires kernel code to service an I/O interrupt, analyze the completion status, and give control to exits that execute in kernel mode.
The use of interrupts is disruptive to application processing due to pollution of local hardware caches used to improve performance of the processor storage hierarchy, the hardware serialization incurred for interrupt processing, and the instructions required in the kernel to service the interrupt. Provision of exits that execute in kernel mode requires a degree of expertise and a level of authorization that is undesirable for application writers.
The InfiniBand™ Architecture Specification is a standard that is available from the InfiniBand® Trade Association. The InfiniBand™ Architecture Specification defines an alternative approach to I/O processing that allows more direct use of I/O facilities by an application.
InfiniBand™ provides a hardware message passing mechanism which can be used mechanism that can be used for I/O devices and Interprocess Communications (IPC) between general computing nodes. Consumers access InfiniBand™ message passing hardware by posting send/receive messages to send/receive work queues on an InfiniBand™ Channel Adapter (CA). The send/receive work queues (WQ) are assigned to a consumer as a Queue Pair (QP). Consumers retrieve the results of these messages from a Completion Queue (CQ) through InfiniBand™ send and receive work completions (WC).
The source CA takes care of segmenting outbound messages and sending them to the destination. The destination CA takes care of reassembling inbound messages and placing them in the memory space designated by the destination's consumer. There are two CA types: Host CA and Target CA. The Host Channel Adapter (HCA) is used by general purpose computing nodes to access the InfiniBand™ fabric. Consumers use InfiniBand™ verbs to access Host CA functions. The software that interprets verbs and directly accesses the CA is known as the Channel Interface (CI).
The Poll verb allows an application to determine which of its work requests have completed and provides ending status. This Poll verb is defined to execute in user mode, i.e., it does not require kernel intervention. In order to properly serialize use of the resources related to the work request, current processing uses kernel serialization services to provide disabled spin locks. Even in an enabled environment, such as would be expected in an InfiniBand™-enabled environment, use of kernel serialization services would be expected, as for example to utilize latches. The use of latches would impose a performance penalty on the Poll verb and would also require some recovery logic to track the ownership of the latch while it is held.
The Poll verb interacts with other verbs and there are some problems in supporting the Poll verb for a multithreaded environment. For example, multiple consumers running independently and possibly at the same instant in time could be requesting the Poll service against the same Completion Queue, creating a serialization problem. There is a need for a Poll service invokable in user mode without using kernel serialization services.